home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 March / CMCD0305.ISO / Software / Shareware / Utilitare / emu / Emu8086_Setup_307c.exe / {app} / Samples / matrix.asm < prev    next >
Assembly Source File  |  2002-11-28  |  923b  |  74 lines

  1. ; Matrix transpose sample
  2. ; (reverse rows with columns).
  3.  
  4.  
  5. #make_COM#
  6.  
  7. ORG 100h
  8.  
  9. jmp start
  10.  
  11. ; To view matrix select
  12. ; "Variables" from "View"
  13. ; menu of the emulator
  14. ; and set [Elements] property
  15. ; to "3" for these items:
  16. ;   MATRIX
  17. ;   ROW1
  18. ;   ROW2
  19.  
  20. matrix_size EQU 3
  21.  
  22. ; ----- matrix ------
  23. matrix     db 1,2,3
  24. row1       db 4,5,6
  25. row2       db 7,8,9
  26. ;--------------------
  27.  
  28. i dw ?
  29. j dw ?
  30.  
  31. start:
  32.  
  33. mov i, 0
  34. next_i:
  35.  
  36.     ; j = i + 1
  37.     mov cx, i
  38.     inc cx
  39.     mov j, cx
  40.     next_j:
  41.     
  42.         MOV SI, i
  43.         MOV BX, j
  44.     
  45.         MOV AL, matrix_size
  46.         MOV CX, SI
  47.         MUL CL
  48.         MOV SI, AX    
  49.         MOV DL, matrix[SI][BX]
  50.         
  51.         MOV SI, i
  52.         MOV AL, matrix_size
  53.         MUL BL
  54.         MOV BX, AX
  55.         XCHG matrix[BX][SI], DL
  56.         
  57.         MOV BX, j
  58.         MOV AL, matrix_size
  59.         MOV CX, SI
  60.         MUL CL
  61.         MOV SI, AX
  62.         MOV matrix[SI][BX], DL
  63.     
  64.     INC j
  65.     CMP j, matrix_size
  66.     JB next_j    
  67. INC i
  68. CMP i, matrix_size/2
  69. JBE next_i
  70.  
  71. ret
  72.  
  73. end
  74.